레이아웃 파일에 정의된 뷰를 자바 코드로 불러오기 :: 안드로이드 설치 및 개발[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

안드로이드 설치 및 개발
[1]
등록일:2018-07-21 09:49:46 (0%)
작성자:
제목:레이아웃 파일에 정의된 뷰를 자바 코드로 불러오기

액티비티에 대해 알아봤으니 이제 레이아웃 파일에 있는 뷰를 자바 코드로 불러와봅시다.



 


activity_main.xml로 이동합니다.





뷰를 자바 코드에서 제어하려면 다음과 같이 뷰에 id 속성을 추가해야 합니다.

 


android:id = "@+id/지정할아이디"

 

이 아이디는 레이아웃과 마찬가지로 R 클래스의 'id'라는 이너 클래스에 저장됩니다.

코드에서 'R.id.지정했던아이디' 식으로 접근하기 때문에 아이디는 반드시 자바에서 변수명으로 사용할 수 있는 문자
즉, 영문자와 '_' 문자로 이루어져야 합니다. (당연한 말이지만 공백도 들어가면 안 됩니다!)

특수문자가 들어가면 이 역시 R.java가 통째로 사라지며 프로젝트는 빨간 줄 범벅이 됩니다. (멘붕)










위처럼 코드로 불러올 뷰에 적당한 id를 부여해봅시다.





다시 MainActivity.java로 돌아와서 (탭 전환 단축키인 'Ctrl + Tab'을 사용하면 편합니다.)
onCreate의 setContentView 아래에 다음과 같은 코드를 작성해봅시다.

 


레이아웃에 정의된 뷰는 'findViewById'라는 메서드를 사용하여 코드로 가져올 수 있습니다.
첫번째 인자로 'R.id.지정했던아이디'를 주면 됩니다.


(findViewById를 좀 더 빨리 입력하고 싶으면 이 글을 참조하세요.)




이 메서드를 사용할 때는 타입에 주의해야 하는데요,

findViewById는 무조건 View 타입을 반환하니 뷰에 맞는 타입으로 캐스팅해 주셔야 합니다.


잘못된 캐스팅을 하면 실행은 잘 되나 앱이 도중에 죽어버립니다.






 


불러온 뷰는 위와 같이 마음대로 지지고 볶아주시면 됩니다~

'set속성명' 메서드를 사용하여 동적으로 속성을 바꿀 수 있고,
'get속성명' 메서드를 사용하여 현재 지정된 속성값을 가져올 수도 있습니다.

메서드의 속성명은 대체로 XML에 있는 속성명과 대체로 비슷하니 자동 완성 기능을 활용하면 쉽게 찾을 수 있습니다.






 


실행해보면 레이아웃 상에는 아무 내용도 없지만







 


이렇게 onCreate에서 위 코드를 만나면서







 

문자가 출력되게 됩니다!


[본문링크] 레이아웃 파일에 정의된 뷰를 자바 코드로 불러오기
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34746
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.